package Algorithm;

public class test10 {
    // 给定一个含有 n个正整数的数组和一个正整数 target
    // 找出该数组中满足其总和大于等于 target 的长度最小的连续子数组
    // 算法原理: 滑动窗口, 同向双指针
    public static void main(String[] args) {
        int[] nums = {2, 3, 1, 2, 4, 3};
        int target = 7;
        int n = nums.length, left = 0, right = 0;
        // len记录最小子长度
        int sum = 0, len = Integer.MAX_VALUE;
        // 进窗口
        while (right < n) {
            sum += nums[right];
            // 判断
            while (sum >= target) {
                // 更新结果
                len = Math.min(right - left + 1, len);
                // 出窗口
                sum -= nums[left++];
            }
            right++;
        }
        int len1 = len == Integer.MAX_VALUE ? 0 : len;
        System.out.println(len1);
    }
}
